﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Contract.Business.Entity;
using Generic.Data.Entity;

namespace DataEntity
{
    //Criado por : Gustavo
    //Data       : 10/25/2011 12:19:32 AM
    public partial class DEVenda : IDataEntity<BEVenda>
    {
        #region IDataEntity<BEVenda> Members

        public BEVenda ConvertToBE(int rel)
        {
            try
            {
                BEVenda entidade = new BEVenda();

                entidade.Codigo = this.Codigo;
                entidade.CodigoCliente = this._CodigoCliente;
                entidade.CodigoEnderecoEntrega = this._CodigoEnderecoEntrega;
                entidade.DataVenda = this._DataVenda;
                entidade.Hora = this._Hora;
                entidade.CodigoRegiaoEntrega = this._CodigoRegiaoEntrega;
                entidade.ValorTotal = this._ValorTotal;
                entidade.ValorTaxaEntrega = this._ValorTaxaEntrega;
                entidade.ValorTroco = this._ValorTroco;
                entidade.Observacao = this._Observacao;
                entidade.Desconto = this._Desconto;
                entidade.Enviada = this._Enviada;
                entidade.Acrescimo = this._Acrescimo;
                entidade.Cancelada = this._Cancelado;
                entidade.MotivoCancelamento = this._MotivoCancelamento;

                entidade.Cliente = this.DECliente.ConvertToBE(rel - 1);

                entidade.RegiaoEntrega = this.DERegiaoEntrega.ConvertToBE(rel - 1);

                entidade.EnderecoEntrega = this.DEEnderecoCliente.ConvertToBE(rel - 1);

                if (this.DEPagamentos != null && rel > 0)
                {
                    entidade.Pagamentos = new List<BEPagamento>();
                    foreach (DEPagamento item in this.DEPagamentos)
                        entidade.Pagamentos.Add(item.ConvertToBE(rel -1));
                }

                if (this.DEVendaItems != null && rel > 0)
                {
                    entidade.Itens = new List<BEVendaItem>();
                    foreach (DEVendaItem item in this.DEVendaItems)
                        entidade.Itens.Add(item.ConvertToBE(rel - 1));
                }

                return entidade;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void ConvertFromBE(BEVenda entity)
        {
            try
            {
                this.Codigo = entity.Codigo;
                this._CodigoCliente = entity.CodigoCliente;
                this._CodigoEnderecoEntrega = entity.CodigoEnderecoEntrega;
                this._DataVenda = entity.DataVenda;
                this._Hora = entity.Hora;
                this._CodigoRegiaoEntrega = entity.CodigoRegiaoEntrega;
                this._ValorTotal = entity.ValorTotal;
                this._ValorTaxaEntrega = entity.ValorTaxaEntrega;
                this._ValorTroco = entity.ValorTroco;
                if(!String.IsNullOrEmpty(entity.Observacao))
                    this._Observacao = entity.Observacao;
                this._Desconto = entity.Desconto;
                this._Enviada = entity.Enviada;
                this._Acrescimo = entity.Acrescimo;
                this._Cancelado = entity.Cancelada;
                this._MotivoCancelamento = entity.MotivoCancelamento;
            }
            catch (Exception)
            {
                throw;
            }
        }

        #endregion
    }
}
